/**
 * @file 1config.cpp
 * @author Kun (kun_g@msn.com)
 * @brief 测试GCC常量设定
 * @version 0.1
 * @date 2024-05-14
 *
 * @copyright Copyright (c) 2024
 *
 */
#include <iostream>
#include <vector>

using namespace std;

/**
 * @brief 测试GCC常量设定
 *
 * @return int
 */
int main() {
#if defined(__sgi)
  cout << "__sgi" << endl;
#endif

#if defined(__GNUC__)
  cout << "__GNUC__" << endl;
  cout << __GNUC__ << ' ' << __GNUC_MINOR__ << endl;
#endif

// case2
#ifdef __STL_NO_DRAND48
  cout << "__STL_NO_DRAND48 defined" << endl;
#else
  cout << "__STL_NO_DRAND48 not defined" << endl;
#endif

// case3
#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG
  cout << "__STL_STATIC_TEMPLATE_MEMBER_BUG defined" << endl;
#else
  cout << "__STL_STATIC_TEMPLATE_MEMBER_BUG not defined" << endl;
#endif

// case5
#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
  cout << "__STL_CLASS_PARTIAL_SPECIALIZATION defined" << endl;
#else
  cout << "__STL_CLASS_PARTIAL_SPECIALIZATION not defined" << endl;
#endif

#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
  cout << "__STL_FUNCTION_TMPL_PARTIAL_ORDER defined" << endl;
#else
  cout << "__STL_FUNCTION_TMPL_PARTIAL_ORDER not defined" << endl;
#endif

#ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
  cout << "__STL_EXPLICIT_FUNCTION_TMPL_ARGS defined" << endl;
#else
  cout << "__STL_EXPLICIT_FUNCTION_TMPL_ARGS not defined" << endl;
#endif

#ifdef __STL_MEMBER_TEMPLATES
  cout << "__STL_MEMBER_TEMPLATES defined" << endl;
#else
  cout << "__STL_MEMBER_TEMPLATES not defined" << endl;
#endif

#ifdef __STL_LIMITED_DEFAULT_TEMPLATES
  cout << "__STL_LIMITED_DEFAULT_TEMPLATES defined" << endl;
#else
  cout << "__STL_LIMITED_DEFAULT_TEMPLATES not defined" << endl;
#endif

#ifdef __STL_NON_TYPE_TMPL_PARAM_BUG
  cout << "__STL_NON_TYPE_TMPL_PARAM_BUG defined" << endl;
#else
  cout << "__STL_NON_TYPE_TMPL_PARAM_BUG not defined" << endl;
#endif

#ifdef __SGI_STL_NO_ARROW_OPERATOR
  cout << "__SGI_STL_NO_ARROW_OPERATOR defined" << endl;
#else
  cout << "__SGI_STL_NO_ARROW_OPERATOR not defined" << endl;
#endif

#ifdef __STL_USE_EXCEPTIONS
  cout << "__STL_USE_EXCEPTIONS defined" << endl;
#else
  cout << "__STL_USE_EXCEPTIONS not defined" << endl;
#endif

#ifdef __STL_USE_NAMESPACES
  cout << "__STL_USE_NAMESPACES defined" << endl;
#else
  cout << "__STL_USE_NAMESPACES not defined" << endl;
#endif

#ifdef __STL_SGI_THREADS
  cout << "__STL_SGI_THREADS defined" << endl;
#else
  cout << "__STL_SGI_THREADS not defined" << endl;
#endif

#ifdef __STL_WIN32THREADS
  cout << "__STL_WIN32THREADS defined" << endl;
#else
  cout << "__STL_WIN32THREADS not defined" << endl;
#endif

  return 0;
}